const express = require('express');
const adminRouter = require('./routes/admin')
const userRouter = require('./routes/user')
const todoRouter = require('./routes/todo')
const fs = require('fs')
const app = express();
var multer  = require('multer')
var upload = multer({ dest: 'uploads/' })// 实例化multer，指定上传路径为uploads

app.use(express.json())// 中间件处理post方法提交的json参数，但是注意大部分网页表单提交是urlencoded形式，得用相应中间件express.urlencoded()
//app.use(express.static('public'))// 声明静态资源目录
app.use('/assets', express.static('public'))// 也可以指定访问路径前缀，此时资源路径就形如/assets/index.js 
app.use('/admin', adminRouter)
app.use('/user', userRouter)
app.use('/todo', todoRouter)

app.set('view engine', 'ejs')
app.set('views', './views')// 指明模板引擎的视图目录

app.get('/', (req, res) => {
  res.send({
    name: 'lhr'
  })
})

/**
 * 访问路径如/api/users/11/profile/lhr
 */
app.get('/api/users/:id/profile/:name', (req, res) => {
  res.send(`/api/users/${req.params.id}/profile/${req.params.name}`)
})

app.get('/api/users/query', (req, res) => {
  res.send(`/api/users/query/,query is ${req.query.name}`)
})

// post 方法从req.body取参数，但前提是express使用了
app.post('/api/users/query', (req, res) => {
  res.send(req.body.name)
})

// 打开上传页面
app.get('/api/form', (req, res) => {
  // const form = fs.readFileSync('./form.html', {encoding: 'utf8'})
  // res.send(form)
  res.sendFile(__dirname + '/form.html')
})

// 处理上传请求，使用multer中间件，并指明文件接收参数名为logo
app.post('/api/upload', upload.single('logo') ,(req, res) => {
  res.send({'res_code': 0})
})

app.get('/api/template/:name', (req, res) => {
  res.render('template', {name: req.params.name})// 渲染template.ejs
})

app.listen(3000)